package hypeerweb;

import java.util.List;

import states.NodeState;

public abstract class StandardNodeRole implements NodeInterface {

	protected Node delegate;
	
	private StandardNodeRole() {
		delegate = Node.NULL_NODE;
	}

	public StandardNodeRole(int id) {
		delegate = new Node(id);
	}

	public StandardNodeRole(int id, int height) {
		delegate = new Node(id, height);
	}

	@Override
	public abstract void AddMe(Node node);

	@Override
	public abstract void ReplaceMe(Node node);

	@Override
	public abstract void DeleteMe(Node node);

	@Override
	public WebId getWebId() {
		return delegate.getWebId();
	}

	@Override
	public int getId() {
		return delegate.getId();
	}

	@Override
	public int getHeight() {
		return delegate.getHeight();
	}

	@Override
	public List<Node> getNeighbors() {
		return delegate.getNeighbors();
	}

	@Override
	public List<Node> getDownPointers() {
		return delegate.getDownPointers();
	}

	@Override
	public List<Node> getUpPointers() {
		return delegate.getUpPointers();
	}

	@Override
	public Connections getConnections() {
		return delegate.getConnections();
	}

	@Override
	public void setWebId(WebId webId) {
		delegate.setWebId(webId);
	}

	@Override
	public void setConnections(Connections connect) {
		delegate.setConnections(connect);
	}

	@Override
	public void updateConnections(Connections otherConnect, WebId otherId,
			NodeState otherState) {
		delegate.updateConnections(otherConnect, otherId, otherState);
	}

	@Override
	public void addNeighbor(Node neighbor) {
		delegate.addNeighbor(neighbor);
	}

	@Override
	public void removeNeighbor(Node neighbor) {
		delegate.removeNeighbor(neighbor);
	}

	@Override
	public void addUpPointer(Node upPointer) {
		delegate.addUpPointer(upPointer);
	}

	@Override
	public void removeUpPointer(Node upPointer) {
		delegate.removeUpPointer(upPointer);
	}

	@Override
	public void addDownPointer(Node downPointer) {
		delegate.addDownPointer(downPointer);
	}

	@Override
	public void removeDownPointer(Node downPointer) {
		delegate.removeDownPointer(downPointer);
	}

	@Override
	public void setFold(Node newFold) {
		delegate.setFold(newFold);
	}

	@Override
	public void setSurrogateFold(Node newSurrogateFold) {
		delegate.setSurrogateFold(newSurrogateFold);
	}

	@Override
	public void setInverseSurrogateFold(Node newInverseSurrogateFold) {
		delegate.setInverseSurrogateFold(newInverseSurrogateFold);
	}

	@Override
	public Node getFold() {
		return delegate.getFold();
	}

	@Override
	public Node getSurrogateFold() {
		return delegate.getSurrogateFold();
	}

	@Override
	public Node getInverseSurrogateFold() {
		return delegate.getInverseSurrogateFold();
	}

	@Override
	public void addChild(Node newNode) {
		delegate.addChild(newNode);
	}

	@Override
	public int compareTo(Node arg0) {
		return delegate.compareTo(arg0);
	}

	@Override
	public void addToHyPeerWeb(Node node) {
		delegate.addToHyPeerWeb(node);
	}

	@Override
	public Node findTerminalNode() {
		return delegate.findTerminalNode();
	}

	@Override
	public Node findInsertionPoint() {
		return delegate.findInsertionPoint();
	}

	@Override
	public SimplifiedNodeDomain constructSimplifiedNodeDomain() {
		return delegate.constructSimplifiedNodeDomain();
	}

	@Override
	public Node getLargestConnection() {
		return delegate.getLargestConnection();
	}

	@Override
	public Node getSmallestSurrNeighbor() {
		return delegate.getSmallestSurrNeighbor();
	}

	@Override
	public Node getSmallestNeighborWithoutChild() {
		return delegate.getSmallestNeighborWithoutChild();
	}

	@Override
	public Node getLargestISN() {
		return delegate.getLargestISN();
	}

}
